<?php
class Pedidos {
  private $id_pedido;
  private $observacoes;
  private $id_cliente;
  private $data_abertura;
  private $data_fechamento;
  private $vlr_total;

  private $nome_cliente;
  
  public function __construct($sFiltro = "", $sOrdem = "id_pedido") {
    global $oDB;
    $sSQL = "SELECT id_pedido, observacoes, id_cliente, data_abertura, data_fechamento, vlr_total FROM pedidos";
    if ($sFiltro) {
      $sSQL .= " WHERE ($sFiltro)";
    }
    if ($sOrdem) {
      $sSQL .= " ORDER BY $sOrdem";
    }
    if (!empty($sFiltro)) {
      $oRes = $oDB->Execute($sSQL);
      if ($oRes == false) {
        trigger_error($oDB->ErrorMsg());
      } else {
        $this->id_pedido = $oRes->fields['id_pedido'];
        $this->observacoes = $oRes->fields['observacoes'];
        $this->id_cliente = $oRes->fields['id_cliente'];
        $this->data_abertura = $oRes->fields['data_abertura'];
        $this->data_fechamento = $oRes->fields['data_fechamento'];
        $this->vlr_total = $oRes->fields['vlr_total'];
      }
    }
  }
  
  public function getId_pedido() {
    return $this->id_pedido;
  }
  public function setId_pedido($valor) {
    $this->id_pedido = $valor;
  }
  
  public function getObservacoes() {
    return $this->observacoes;
  }
  public function setObservacoes($valor) {
    $this->observacoes = $valor;
  }
  
  public function getId_cliente() {
    return $this->id_cliente;
  }
  public function setId_cliente($valor) {
    $this->id_cliente = $valor;
  }
  
  public function getData_abertura() {
    return $this->data_abertura;
  }
  public function setData_abertura($valor) {
    $this->data_abertura = $valor;
  }
  
  public function getData_fechamento() {
    return $this->data_fechamento;
  }
  public function setData_fechamento($valor) {
    $this->data_fechamento = $valor;
  }
  
  public function getVlr_total() {
    return $this->vlr_total;
  }
  public function setVlr_total($valor) {
    $this->vlr_total = $valor;
  }

  public function getNome_cliente() {
    return $this->nome_cliente;
  }
  
  public function atualizar() {
    global $oDB;
    $campos = array(
      'observacoes' => $this->observacoes,
      'id_cliente' => $this->id_cliente,
      'data_abertura' => $this->data_abertura,
      'data_fechamento' => $this->data_fechamento,
      'vlr_total' => $this->vlr_total,
    );
    if ($this->id_pedido > 0) {
      $oDB->AutoExecute('pedidos', $campos, 'UPDATE', 'id_pedido = '.intval($this->id_pedido));
    } else {
      $oDB->AutoExecute('pedidos', $campos, 'INSERT');
    }
  }
  public function excluir($aIds) {
    global $oDB;
    $sIds = implode(',', $aIds);
    $sSQL = 'DELETE FROM pedidos WHERE id_pedido IN ('. $sIds .')';
    $oRes = $oDB->execute($sSQL);
    if ($oRes != false) {
      return true;
    }
  }
  public static function listar($filtro = "", $sOrdem = "id_pedido") {
    global $oDB;
    $lista = array();
    $sSQL = "SELECT pedidos.id_pedido, pedidos.observacoes, pedidos.id_cliente, pedidos.data_abertura, pedidos.data_fechamento, pedidos.vlr_total, clientes.nome FROM pedidos
             INNER JOIN clientes ON (pedidos.id_cliente = clientes.id_cliente)";
    if ($filtro) {
      $sSQL .= " WHERE ($filtro)";
    }
    if ($sOrdem) {
      $sSQL .= " ORDER BY $sOrdem";
    }
    $oRes = $oDB->Execute($sSQL);
    if ($oRes == false) {
      trigger_error($oDB->ErrorMsg());
    } else {
      while (!$oRes->EOF) {
        $linha = new self();
        $linha->id_pedido = $oRes->fields['id_pedido'];
        $linha->observacoes = $oRes->fields['observacoes'];
        $linha->id_cliente = $oRes->fields['id_cliente'];
        $linha->data_abertura = $oRes->fields['data_abertura'];
        $linha->data_fechamento = $oRes->fields['data_fechamento'];
        $linha->vlr_total = $oRes->fields['vlr_total'];
        $linha->nome_cliente = $oRes->fields['nome'];
        $lista[] = $linha;
        
        $oRes->MoveNext();
      }
    }
    return $lista;
  }
  
}
?>
